W32: Ensure that correct statting function is used by iconcache
authorРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 14 Jan 2016 09:40:58 +0000 (09:40 +0000)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Thu, 14 Jan 2016 09:44:22 +0000 (09:44 +0000)
With Mingw-w64 fstat() can be an inline function that
calls _fstat32() or _fstat64(), depending on some macros.
And if LFS is enabled, fstat() is defined to turn into
_fstat32i64() or _fstat64(). And some/all of the above
might also be macros as well. Side-step all that mess
and excplicitly re-define fstat as _fstat32, which is
guaranteed to use a version of "stat" struct that
has 32-bit size and time fields, which is what we want.

https://bugzilla.gnome.org/show_bug.cgi?id=760615

gtk/gtkiconcache.c

index ef9ecfad8a36944d5f408b21b7daec15bda4146a..1bf564ef00ae4eee96c6f4e9924764d888f8fb2e 100644 (file)
@@ -110,7 +110,7 @@ _gtk_icon_cache_new_for_path (const gchar *path)
 /* Bug 660730: _fstat32 is only defined in msvcrt80.dll+/VS 2005+ */
 /*             or possibly in the msvcrt.dll linked to by the Windows DDK */
 /*             (will need to check on the Windows DDK part later) */
-#if (_MSC_VER >= 1400 || __MSVCRT_VERSION__ >= 0x0800)
+#if (_MSC_VER >= 1400 || __MSVCRT_VERSION__ >= 0x0800) || defined (__MINGW64_VERSION_MAJOR)
 #undef fstat /* Just in case */
 #define fstat _fstat32  
 #endif